//
//  OAuthViewController.swift
//  Sina
//
//  Created by yuanyuan on 15/12/20.
//  Copyright © 2015年 yuanyuan. All rights reserved.
//

import UIKit
import SVProgressHUD
import AFNetworking

class OAuthViewController: UIViewController {

    let webview = UIWebView()
    
    override func loadView() {
        view = webview
//        设置代理
        
        webview.delegate = self
        
    }
    
//    保证安全不被外界访问  加private 为了兼容OC  使用 @objc关键字 兼容OC中的 target-action机制
    
    @objc private func close() {
    dismissViewControllerAnimated(true, completion: nil)
    
    }
    
    @objc private func defaultAccount() {
        
        let jsString = "document.getElementById('userId').value = '18848950715' ,document.getElementById('passwd').value = '1479770334a'"
        webview.stringByEvaluatingJavaScriptFromString(jsString)
    
    
    
    }
    
    override func viewDidLoad() {
        super.viewDidLoad()
        loadOAuthPage()
       
        setNavBar()
    }

    //加载授权界面
    private func loadOAuthPage(){
        
    let urlString = "https://api.weibo.com/oauth2/authorize?" + "client_id=" + client_id + "&redirect_uri=" + redirect_uri
        
    let url = NSURL(string: urlString)
        
    webview.loadRequest(NSURLRequest(URL: url!))
    
    }
    
//  设置导航条
    private func setNavBar() {
    
    self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: .Plain, target: self, action: "close")
        self.navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: .Plain, target: self, action: "defaultAccount")
    }
    
    
    
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
    

}

//    extension是使相关的代码更加模块化 易于阅读和维护   要写在class类的外边
extension OAuthViewController: UIWebViewDelegate {
    
    func webViewDidStartLoad(){
//        指示器显示
        SVProgressHUD.show()
        
        
    }
    
    func webViewDidFinishLoad(){
//        指示器关闭
        SVProgressHUD.dismiss()
        
    }
    
//    协议方法返回值类型是bool 一般返回true就正常工作
    // shouldStartLoadWithRequest 函数的外部参数 外界调用使用这个参数
    // request 内部参数  函数内部使
//授权成功回调页面  不希望加载https://m.baidu.com/?code=30693263962ea91e887a823289de60ab&from=844b&vit=fps
//    授权页面希望加载https://api.weibo.com/oauth2/authorize?client_id=1433598153&redirect_uri=http://www.baidu.com
//请求授权页面希望加载    https://api.weibo.com/oauth2/authorize
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        
//        需要根据请求的url 去屏蔽不希望加载的页面
        guard let urlString = request.URL?.absoluteString else {
        
        return false
        }
        if urlString.hasPrefix("https://api.weibo.com/") {
//        希望加载的页面
            return true
        
        }
        if !urlString.hasPrefix("http://www.baidu.com") {
//        一定不是请求成功后的回调  也不是我们希望加载的页面
        return false
        }
//程序走到这里一定是请求成功后的回调
        print(urlString)
        
//        解析字符串获取code码
//        query  获取url中 参数部分  键值
        let query = request.URL?.query
        if let q = query {
//        字符串截取
            let codeStr = "code="
            let code = q.substringFromIndex(codeStr.endIndex)
            print(code)
//            加载用户token
            loadAccessToken(code)
            
        }
        
        return false
        
    }
    
//    加载用户token(请求标识)
    func loadAccessToken(code:String) {
        
        UserAccountViewModel().loadAccessToken(code) { (isSuccess) -> () in
            if isSuccess {
                print("登陆成功")
                //动画结束的时候 发出 页面切换的通知
                
                //通知是同步的还是异步的?
                //通知是同步的
                
                
                //这个方法是控制器dismiss掉 但是并不会立即被回收
                //modla出来的页面 注意回收 需要手动close
                self.dismissViewControllerAnimated(false, completion: { () -> Void in
                    //等待 被modal出来的页面 彻底被回收是 再发出页面切换的通知
                    NSNotificationCenter.defaultCenter().postNotificationName(WBSwitchRootVCNotification, object: "Welcome")
                    
                    print("come here")
                })
            } else {
                print("登陆失败")
            }
        }
    
    }
    
//    获取用户信息
//    private func loadUserInfo(token:String,uid:String) {
//    let urlString = "https://api.weibo.com/2/users/show.json"
//let parameters = ["access_token": token, "uid": uid]
//        
//        let AFN = AFHTTPSessionManager()
//        AFN.GET(urlString, parameters: parameters, success: { (_, result) -> Void in
//            
//            print(result)
//            if let dict = result as? [String:AnyObject]{
//                
////            获取用户信息  头像 和 名字
//            let avatar_large = dict["avatar_large"] as! String
//            let name = dict["name"] as! String
//            
//                
//           
//                print(avatar_large,name)
//                
//            }
//            
//            }) { (_, error) -> Void in
//                
//            print(error)
//                
//        }
//    
//    
//    }
    
}
